/*
 * @Author: your name
 * @Date: 2021-10-27 10:18:45
 * @LastEditTime: 2021-10-27 17:02:28
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /egg_ payment/app/controller/pay.js
 */
'use strict';

const Controller = require('egg').Controller;
// 发送支付功能
const AlipaySDK = require('alipay-sdk').default
// 将支付信息 formdata 包裹住
const AlipayFormData = require('alipay-sdk/lib/form').default

class PayController extends Controller {
  async zhifubao() {
    const { ctx, config } = this;
    const alipaySdk = new AlipaySDK({
        appId: config.payConfig.appId, // 你自己的沙箱环境的appId
        privateKey: config.payConfig.privateKey, // 私钥
        signType: 'RSA2', // 签名类型
        alipayPublicKey: config.payConfig.alipayPublicKey, // 支付宝公钥（不是应用公钥）
        gateway: 'https://openapi.alipaydev.com/gateway.do', // 网关地址
        timeout: 5000, // 网关超时时间
        camelcase: true // 是否把网关返回的下划线 key 转换为驼峰写法
    })

    const formData = new AlipayFormData();
    
    formData.setMethod('get')
	formData.addField('appId', '2021000118638538')
	formData.addField('charset', 'utf-8')
	formData.addField('signType', 'RSA2')
	formData.addField('bizContent', {
		outTradeNo: '1569380127420', // 【必选】商户订单号：64个字符内，包含数字，字母，下划线；需要保证在商户端不重复
		productCode: 'FAST_INSTANT_TRADE_PAY', // 【必选】销售产品码，目前仅支持FAST_INSTANT_TRADE_PAY
		totalAmount: '1', // 【必选】订单总金额，精确到小数点后两位
		subject: 'test', // 【必选】 订单标题
		body: 'test' // 【可选】订单描述
	})
	console.log('formData:===============', formData)
    /**
	 * exec对应参数：
	 * method（调用支付宝api）
	 * params（api请求的参数（包含“公共请求参数”和“业务参数”））
	 * options（validateSign，formData，log）
	 *
	 * 统一下单支付 exec
	 */
	ctx.body = await alipaySdk.exec('alipay.trade.page.pay', {}, { formData })
  }
}

module.exports = PayController;
